home *** CD-ROM | disk | FTP | other *** search
/ Gekkan Dennou Club 145 / Gekkan Dennou Club - 2000.6 Vol. 145 (Japan).7z / Gekkan Dennou Club - 2000.6 Vol. 145 (Japan) (Track 1).bin / games / spassion / source.lzh / SOURCE / FuncEnemy / BATTERY.C next >
Text File  |  2000-03-24  |  3KB  |  122 lines

  1. /*
  2. #include <stdio.h>
  3. #include <iocslib.h>
  4. void    key_wait( void );
  5. #define BIT(i)        (1<<(i))
  6. */
  7. /* 砲台 */
  8. #include <xsp2lib.h>
  9. #include "../SPASSION.H"
  10. #include "../player.h"
  11. #include "../enemy.h"
  12. #include "../eshot.h"
  13. #include "../effect.h"
  14. #include "../priority.h"
  15. #include "../sound.h"
  16. #include "../entry.h"
  17. #ifndef NULL
  18. #define NULL ((void *) 0)
  19. #endif
  20.  
  21. #define PALET_MAIN    0x0500
  22.  
  23. short enemy_explode( ENEMY *ene );
  24. static short MoveEnemyBattery(ENEMY *);
  25. /*static void TiniEnemyBattery(ENEMY *);*/
  26.  
  27. /* 32x16キャラの当たり判定 */
  28. static HIT_XY4    hit_p[]={-12-PLAYER_HIT_X,-8-PLAYER_HIT_Y,12+PLAYER_HIT_X,8+PLAYER_HIT_Y};
  29. static HIT_XY4    hit_o[]={-12-OPTION_HIT_X,-8-OPTION_HIT_Y,12+OPTION_HIT_X,8+OPTION_HIT_Y};
  30. static HIT_XY4    hit_s[]={-12,-8,12,8};
  31.  
  32. /* InitEnemyZako00Hitと同じなのでいらない */
  33. void InitEnemyBatteryHit( void )
  34. {
  35. }
  36. static short    pt[4]={10,11,12,13};
  37.  
  38. void InitEnemyBattery(ENEMY *ene)
  39. {
  40.     ene->pt             = obj_hatch+pt[ene->arg];
  41.     ene->info         = PALET_MAIN | PRIORITY_ZAKO;
  42.     ene->vx             = -map_vx;
  43.     ene->vy             = 0;
  44.     ene->hit_p[0]     = &hit_p[0];ene->hit_p[1]=NULL;
  45.     ene->hit_o[0]     = &hit_o[0];ene->hit_o[1]=NULL;
  46.     ene->hit_s[0]     = &hit_s[0];ene->hit_s[1]=NULL;
  47.     ene->hp             = 10;
  48.     ene->no_dead     = 0;
  49.     switch ( level ){
  50.     case EASY:
  51.         ene->flg=120;
  52.         break;
  53.     case NOMAL:
  54.         ene->flg=90;
  55.         break;
  56.     case HARD:
  57.         ene->flg=60;
  58.         break;
  59.     }
  60.     ene->func_enemy_move = MoveEnemyBattery;
  61. /*    ene->func_enemy_tini = TiniEnemyBattery;*/
  62.  
  63. /*    entry_counter_stop = !0;*/        /* エントリーカウンター停止 */
  64. }
  65.  
  66.  
  67. static short MoveEnemyBattery( ENEMY *ene )
  68. {
  69.     unsigned char angle[4]={192,64,192,64};
  70.     short    xpoint[4]={-8,8,-8,8},ypoint[4]={-5,-5,5,5};
  71.     short Wait( ENEMY *ene, short time );
  72.  
  73.     /* 速度を足して上位ワード(固定整数部)だけ取り出す */
  74.     ene->x = ((ene->lx += ene->vx) >> 16);
  75.     ene->y = ((ene->ly += ene->vy) >> 16);
  76.  
  77.     if( Wait( ene, ene->flg ) ){
  78.         MakeEShot(ESHOT_LASER00, ENE_X+xpoint[ene->arg], ENE_Y+ypoint[ene->arg],15, angle[ene->arg], 4,0,ene);
  79.         SetSE(SE_ESHOT_LASER);    /* 敵ショット音 */
  80.     }
  81.  
  82. #if 0
  83.         if(ENE_X < 192){
  84.             ene->lx = 192*65536;
  85.             ene->vx = 0;
  86.             ene->vy = 0;
  87.         }
  88.             if( BITSNS(0x04) & BIT(1) ){
  89.                 while( BITSNS(0x04) & BIT(1) );
  90.                 entry_counter_stop = 0;
  91.                 return (0);
  92.             }
  93. #endif
  94.     /* 画面外に出たら消去 */
  95.     if( ENE_X < 0 - 32 )
  96.         return (0);
  97.  
  98.     /* ダメージを受けた時の処理 */
  99.     if(ene->damage){
  100.         SetSE(SE_DAMAGE);    /* 効果音 */
  101.         ene->info = PALET_DAMAGE | PRIORITY_ZAKO;
  102.         if((ene->hp -= ene->damage) <= 0) {
  103.             MakeEffect(EFFECT_EXPLMINI, 0, ene->x-8, ene->y-8);
  104.             SetSE(SE_EXPL_BATTERY);    /* 爆発音 */
  105.             ene->player->score += 2;
  106.             return (0);        /* 消去 */
  107.         }
  108.         ene->damage = 0;
  109.     }else
  110.         ene->info = PALET_MAIN | PRIORITY_ZAKO;
  111.  
  112.     xobj_set_st(ene);
  113.  
  114.     return(1);
  115. }
  116.  
  117. /*
  118. static void TiniEnemyBattery(ENEMY * p)
  119. {
  120. }
  121. */
  122.